#ifndef PARSER_H_
#define PARSER_H_

#pragma once
#include <sys/types.h>
#include <dirent.h>
#include <errno.h>
#include <vector>
#include <string>
#include <iostream>
#include <fstream>
#include <sstream>
#include <algorithm>
#include "FileHandler.h"
#include "ArchivoAuxiliar.h"
#include "ArchivoDocumentos.h"
#include "ParserUtils.h"
#include "mainwindow.h"

using namespace std;

class Parser: public ParserUtils {

public:
	Parser(string dir);
    unsigned int getCantFiles();
	virtual ~Parser();


private:
    unsigned int cantFiles;
	string pathRaiz;
	ArchivoDocumentos* docFile;
    vector<RegistroAuxiliar> buffer;
    uint32_t posTermino;
    unsigned int blockSize;

    void parseFiles(string path);
	void parseFile(string path);
    bool isIndexable(string token);
	void addToken(string token);
    void mergeReg(RegistroAuxiliar& reg, RegistroAuxiliar& regSig);
    void groupTerms();
    void emptyBuffer();
};
#endif /* PARSER_H_ */
